.TITLE TTJZ .IDENT /05.02/ ; ; Copyright (c) 1995-1999 by Mentec, Inc., U.S.A. ; All rights reserved ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED ; OR COPIED ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE. ; ; ; 27-JAN-78 PETER WANNHEDEN ; ; PREVIOUSLY MODIFIED BY: ; ; P. WANNHEDEN ; C. F. SPITZ ; D. R. DONCHIN ; ; MODIFICATIONS: ; ; D. R. DONCHIN 14-SEP-83 05.01 ; DD179 -- ADD HOSTSYNC SUPPORT ; ; S. C. ADAMS 23-APR-84 05.02 ; SA170 -- CHANGE S4.HPC TO S5.HPC AND S1.CTS TO S2.CTS ; ; ;+ ; COMMON ROUTINES FOR DJ-11 AND DZ-11 CONTROLLERS. ;- ; ; .IF DF D$$J11!D$$Z11 .MCALL UCBDF$, SCBDF$ ; UCBDF$ ;DEFINE UCB SYMBOLS SCBDF$ ;DEFINE SCB SYMBOLS .PSECT MAP5 ; ; ;+ ; YJSTAX/YZSTAX - START OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; U.TOP+2 BUFFER ADDRESS ; U.TOC BYTE COUNT ; S1.CTO 0 ;- ; ; .ENABL LSB ; YJSTAX:: YZSTAX::BIT #S5.HPC,U.TST5-U.TSTA(R5) ;;;ANY HIGH PRIORITY CHARACTERS TO OUTPUT? BNE YZRESX ;;;Y - DO IT REGARDLESS OF XOFF STATUS ASSUME S2.CTS,100000 TST 2(R5) ;;;OUTPUT STOPPED BY CTRL-S? BMI 10$ ;;;Y - IGNORE ; ; ;+ ; YJRESX/YZRESX - RESUME OUTPUT. ; ; INPUT: ; REGISTERS R2-R5 STANDARD FOR CONTROLLER-DEPENDENT ROUTINE. ; S2.CTS 0 ;- ; ; YJRESX:: YZRESX::BIS $BTMSK(R2),4(R3) ;;;ENABLE TRANSMIT INTERRUPTS ;;;THE FIRST INTERRUPT WILL START ;;;(OR RESUME) OUTPUT. 10$: RETURN ;;; ; ; ;+ ; JZOUT - COMMON OUTPUT INTERRUPT PROCESSING FOR DJ-11 AND DZ-11. ; ; INPUT: ; 2(SP) POINTER TO CONTROLLER REGISTER (BYTE) ; THAT CONTAINS INTERRUPTING LINE NUMBER IN BITS 0-3 ; R3 CSR ADDRESS ; R4 KRB ADDRESS (RSX-11M+) ; R4 ADDRESS OF UCB LIST (RSX-11M) ; ; OUTPUT: ; FIRST, ALL LINES THAT REQUIRE OUTPUT WORK ARE SERVICED. ; NEXT, IF ANY LINE REQUIRES INPUT WORK, THE SILO IS EMPTIED. ; IF AT THAT TIME OUTPUT WORK IS AGAIN REQUIRED (THERE WILL BE ; IF THERE WAS ANY INPUT THAT REQUIRES ECHO), THE LOOP ; LOOKING FOR OUTPUT WORK IS REENTERED. ; ON RETURN, ALL OUTPUT AND INPUT WORK THAT CAN BE DONE IS DONE. ; ; REGISTERS ALTERED: R2,R5 ;- ; ; JZOUT:: MOVB @2(SP),R5 ;;;GET INTERRUPTING LINE NUMBER CALL MUXUCB ;;;CHECK LINE NUMBER AND GET UCB ADDRESS MOV $BTMSK(R2),R2 ;;;GET BITMASK FOR XMIT ENABLE BCS 30$ ;;;BAD LINE - JUMP .IF DF R$$MPL MOV R4,-(SP) ;;;SAVE KRB POINTER CALL OUTISR ;;;DO COMMON OUTPUT INTERRUPT PROCESSING MOV (SP)+,R4 ;;;RESTORE KRB POINTER MOV @R4,R3 ;;;RESTORE CSR POINTER .IFF ;R$$MPL MOV R3,-(SP) ;;;SAVE CSR MOV R4,-(SP) ;;;SAVE ADDRESS OF UCB LIST CALL OUTISR ;;;DO COMMON OUTPUT INTERRUPT PROCESSING MOV (SP)+,R4 ;;;RESTORE ADDRESS OF UCB LIST MOV (SP)+,R3 ;;;RESTORE CSR ADDRESS .ENDC ;R$$MPL 20$: TST @R3 ;;;XMIT READY? BMI JZOUT ;;;Y - LOOP ; ; NO MORE LINES REQUIRE OUTPUT WORK. SEE IF ANY INPUT WORK TO DO. ; MOV 2(R3),R5 ;;;GET A CHARACTER FROM SILO BPL 10$ ;;;NONE - EXIT CALL MUXIN1 ;;;OK - PROCESS INPUT CHARACTER ;;;MUXIN1 RETURNS TO OUR CALLER IF ;;;NO OUTPUT WORK TO DO BR JZOUT ;;;OUTPUT WORK TO DO - LOOP ; ; OUTPUT INTERRUPT OCCURRED ON A LINE THAT WE DON'T RECOGNIZE. ; I DON'T KNOW HOW IT GOT HERE BUT LET'S TRY TO PREVENT IT ; FROM HAPPENING AGAIN. ; 30$: BIC R2,4(R3) ;;;DISABLE XMIT ON THAT LINE BR 20$ ;;; ; .DSABL LSB .ENDC ;D$$J11!D$$Z11 ; ; .END